home *** CD-ROM | disk | FTP | other *** search
- Name
-
- EXT_import_context
-
- Name Strings
-
- GLX_EXT_import_context
-
- Version
-
- $Date: 1996/04/01 23:22:56 $ $Revision: 1.1 $
-
- Number
-
- 47
-
- Dependencies
-
- This extension affects the definition of SGIX_FBConfig.
-
- Overview
-
- This extension allows multiple X clients to share an indirect
- rendering context.
-
- Additional convenience procedures to get the current Display*
- bound to a context as well as other context information are
- also added.
-
- Issues
-
- Does glXImportGLXContext also need to take an XVisualInfo*?
- No. This information will be retrieved from the server.
-
- New Procedures and Functions
-
- Display *glXGetCurrentDisplayEXT();
-
- int glXQueryContextInfoEXT(Display *dpy, GLXContext context,
- int attribute,int *value);
-
- GLXContextID glXGetContextIDEXT(const GLXContext context);
-
- GLXContext glXImportContextEXT(Display *dpy, GLXContextID contextID);
-
- void glXFreeContextEXT(Display *dpy, GLXContext context);
-
- New Tokens
-
- Accepted by the <attribute> parameter of glXQueryContextInfoEXT:
-
- GLX_SHARE_CONTEXT_EXT 0x800A
- GLX_VISUAL_ID_EXT 0x800B
- GLX_SCREEN_EXT 0x800C
-
- Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
-
- None
-
- Additions to Chapter 3 of the 1.0 Specification (Rasterization)
-
- None
-
- Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
- and the Frame Buffer)
-
- None
-
- Additions to Chapter 5 of the 1.0 Specification (Special Functions)
-
- None
-
- Additions to Chapter 6 of the 1.0 Specification (State and State Requests)
-
- None
-
- Additions to the GLX Specification
-
- [Add the following to Section 3.2.4 of the GLX Specification
- (Rendering Contexts)]
-
- To get the display associated with the current context, use
-
- Display *glXGetCurrentDisplayEXT();
-
- If there is no current context, NULL is returned. No round trip
- is forced to the server; unlike most X calls that return a value,
- glXGetCurrentDisplayEXT does not flush any pending events.
-
- To obtain the value of a context's attribute, use
-
- int glXQueryContextInfoEXT(Display *dpy, GLXContext context,
- int attribute, int *value);
-
- glxQueryContextInfoEXT returns through <value> the value of
- <attribute> for <context>. It may cause a round trip to the
- server.
-
- The values and types corresponding to each GLX context attribute
- are listed in the table below.
-
- GLX context attribute type context information
- --------------------- ---- -------------------
- GLX_SHARE_CONTEXT_EXT XID xid of the share list context
- GLX_VISUAL_ID_EXT XID visual id
- GLX_SCREEN_EXT int screen number
-
- glxQueryContextInfoEXT returns GLX_BAD_ATTRIBUTE if <attribute>
- is not a valid GLX context attribute or GLX_BAD_CONTEXT if <context>
- is invalid, otherwise it returns Success.
-
- To obtain the XID of a GLXContext, use
-
- GLXContextID glXGetContextIDEXT(const GLXContext context);
-
- No round trip is forced to the server; unlike most X calls that
- return a value, glXGetContextIDEXT does not flush any
- pending events.
-
- To create a GLXContext given the XID of an existing GLXContext, use
-
- GLXContext glXImportContextEXT(Display *dpy,
- GLXContextID contextID);
-
- glXImportContextEXT may be used in place of glXCreateContext to
- share another process's indirect rendering context.
-
- Only the server-side context information can be shared between
- X clients; client-side state, such as pixel storage modes,
- cannot be shared. Thus, glXImportContextEXT, must allocate
- memory to store client-side information. This memory is freed
- by calling glXFreeContextEXT.
-
- This call does not create a new XID. It merely makes an
- existing object available to the importing client (Display *).
- Like any XID, it goes away when the creating client drops its
- connection or the ID is explicitly deleted. Note that this is
- when the XID goes away. The object goes away when the XID
- goes away AND the context is not current to any thread.
-
- If <contextID> does not refer to a valid context, then
- a BadContext error is generated; if <contextID> refers to
- direct rendering context then no error is generated but
- glXImportContextEXT returns NULL.
-
- To free the client-side part of a GLXContext that was created
- with glXImportContext, use
-
- void glXFreeContextEXT(Display *dpy, GLXContext context);
-
- glXFreeContext does not free the server-side context information
- or the XID associated with the server-side context.
-
- [Add the following clarification to glXMakeCurrent]
-
- Change:
- If <context> is current to some other thread, then glXMakeCurrent
- will generate a BadAccess error.
-
- To:
- If <context> is current to some other thread or process, then
- glXMakeCurrent will generate a BadAccess error.
-
- GLX Protocol
-
- One new GLX protocol command is added.
-
- QueryContextInfo
- 1 CARD8 opcode (X assigned)
- 1 17 GLX opcode (glXVendorPrivateWithReply)
- 2 4 request length
- 4 15 vendor specific opcode
- 4 unused corresponds to context tag in header
- 4 GLX_CONTEXT context id
- =>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 2*n reply length
- 4 CARD32 n
- 20 unused
- 8*n LISTofCARD32 attribute, value pairs
-
- Errors
-
- None
-
- New State
-
- None
-
- New Implementation Dependent State
-
- None
-